Contents
  1. 1. Introduction
  2. 2. 详细介绍utf8
  3. 3. ASCII
  4. 4. utf8和unicode的关系
  5. 5. 结论
  6. 6. OVER

Introduction

公司的微信获取名称用于显示,但是iphone的emoji字符不好保存,因为某些特殊字符是四个字节的。遂需要了解下utf8

详细介绍utf8

  • UTF8代表了Unicode Transformation Format.
  • “8”代表他使用8bit表示一个字符单元。
  • 他可以用1个字节表示一个字符,也可以用最多四个字节表示一个字符。
  • 他既可以简洁地像ASCII,也包含了所有的unicode字符。

    小于等于127,utf8使用一个字节。也就是unicode值得低七位;也和ASCII相同。
    小于等于2047,utf8使用两个字节。首字节高两位置1,第三位置0;第二个字节首位置1,第二位置0;
    大于等于2048,小于65535,utf8使用3个字节。

下表说明了utf8不同字节数的表示方法

首字节 第二字节 第三字节 第四字节 自由位数 最大unicode值
0xxxxxxx 7 007F hex (127)
110xxxxx 10xxxxxx (5+6)=11 07FF hex (2047)
1110xxxx 10xxxxxx 10xxxxxx (4+6+6)=16 FFFF hex (65535)
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (3+6+6+6)=21 10FFFF hex (1,114,111)

详情参考原文

ASCII

ASCII(American Standard Code for Information Interchange)包括128个字符,其中33个字符不能显示。
有关ASCII介绍请参考连接

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符无法显示(这是以现今操作系统为依归,但在DOS模式下可显示出一些诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符,控制字符的用途主要是用来操控已经处理过的文字,在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。

utf8和unicode的关系

unicode只规定了符号对应的二进制码,并没有规定这个二进制码如何存储。因为只有知道了怎么存储,才能确定别人书写的字节流代表的意义。例如:

“安”二进制表示为101101110001001,如果多个字符连接起来,程序不能判断这个是一个ASCII值,还是一个unicode的“安”

他们之间的关系,以及ASCII的关系,详见原文

结论

得出的结论,如果想要匹配ASCII中的可显示字符,在unicode中一个字符一般由\u开始,后跟4位16进制数。根据查表可知

:可显示字符的十六进制范围是21-7E(除去空格),那末,可ASCII中的显示字符的范围就是\u0021-\u007E.

OVER

Contents
  1. 1. Introduction
  2. 2. 详细介绍utf8
  3. 3. ASCII
  4. 4. utf8和unicode的关系
  5. 5. 结论
  6. 6. OVER